#ifndef __KERNEL_H
#define __KERNEL_H

// contains addresses of various parts of the kernel

// this is set by the linker
extern u32 END;
extern u32 VIRT_END;

#define         KERNEL_VIRT_OFFSET         0xC0000000

#define  	KERNEL_END	           (u32)&END
#define         KERNEL_VIRT_END            (u32)&VIRT_END

#define         KERNEL_START               0x00100000
#define         KERNEL_VIRT_START          (KERNEL_START + KERNEL_VIRT_OFFSET)

#define         HEAP_START                 0xD0000000
#define         HEAP_INIT_SIZE             0x00100000

#define         STACK_START                0XE0000000
#define         STACK_INIT_SIZE            0x00001000

// where we start storing our virtual addresses
#define         VIRT_ADDR_STACK         0xc0005000

// this is bad practice, but easier than figuring out how
// much RAM we really have
#define         TOTAL_RAM            0x04000000

// defined in k_init.c
void kpanic(char*);


#endif
